# Exercise 1

A->BB->CCB->CCCC
За първата буква 2 варианта, втората буква 2 варианта, ...
2 * 2 * 2 * 2 = 16

# Exercise 2

A->BB->CCB->CCCC
думи с дължина 0: 1
думи с дължина 1: 2
думи с дължина 2: 4
думи с дължина 3: 8
думи с дължина 4: 16
1 + 2 + 8 + 4 + 16 = 1 + 10 + 20 = 31

# Exercise 3

ПРЕЧКА: .^n регулярен ли е?

a. НЕ, балансиране, (^n )^n
b. ДА, ((()*, (^2n
c. ДА, няма цикличност, т.е. краен
d. ДА, a*b
e. ДА, ba*
f. НЕ, a^2n b^n
g. ДА, (aab)*
h. ДА, (aab)+

# Exercise 4

a. ДА, S->A->B-> C->B+C->C+C
b. НЕ, S->A->C->D->B-|
                 -|
              ->B+C-|
           ->B-|
c. НЕ, S->A->D-|
           ->B-|
           ->C-|
d. ДА, S->A->C->D->A
e. НЕ, C->1C не може да породи
f. ДА, C->C+B

# Exercise 5

a. ДА, А->Sb->Aab|db
b. ДА, S->Aa|d->Sba|d
c. НЕ, ЛЯВА РЕКУРСИЯ, A->Aab
d. НЕ, РАЗЛИЧЕН ЕЗИК, S->dAa->da

# Exercise 6

E->E*E->5*E->5*E+E->5*3+E->...    3.
                  ->5*E+4->...    5.
 ->E+E->E+4->E+E+4->5*3+E+4->...  1.
           ->5*E+4                4. MISSED
      ->5*3+E->...                2.

# Exercise 7

a. да, избираме дърво 3 вместо 4
b. не, дървета 1 и 2 не се различават с това
c. да, избираме дърво 1 вместо 2 финално
d. не, никои дървета не се различават с това

# Exercise 8

a. ДА, (00)+, регулярен => безконтекстен
b. ДА, a^n b^n, не рег, да безк
c. НЕ, a^n b^n c^n, не рег, не безк
d. НЕ, 0^(n*n)
e. ДА

# Exercise 9

Г1. n++
    S->aSb->aSbb->abbb
    S->Sb->aSbb->abbb
    m=0
    k=0
    заради S->Sb

Г2. n=0
    всяко правило генерира своя си буква
    m++
    k=0
    заради S->Sa|Sb

Г3. n++
    S->SaS->SaSaS->aaS->aaa
    S->SaS->SaSaS->Saa->aaa
    m=0
    k=0
    заради S->SaS

Г4. n=0
    всяко правило генерира своя си буква
    m++
    k++
    няма правило от типа A->Ax, така че рекурсивното спускане няма да забие

=> n=2, m=2, k=1

# Exercise 10

S->A1->101
     ->1
     ->C1->01
         ->11
 ->1B->1
     ->1C1->101
          ->111
Думи: 101, 1, 01, 11, 111 ; 5
Дървета: 7

# Exercise 11

a. ДА
b. ДА
c. НЕ, не може да генерира int-int+int
d. НЕ, не може да генерира int*int+int
e. ~~НЕ, не може да генерира int*int+int~~
  MISSED ДА

# Exercise 12

Първо S->A
Сравнява всички нули, стига до 1ца, връща се
Второ S->B
Сравнява първата нула с 1ца, връща се
Трето S->0S
Сравнява един път и почваме пак от началото

За 001:
3 + 1 + 1 +   2 + 1 + 1 +     1 + 1 = 11
n + 2     +   n-1 + 2   +     n-2 + 2   
2*n + n + n-1 + n-2 ...
2*n + n*n - (0+1+2...)
(2+n)*n - (0+n-1)*n/2 = n* (2+n - n/2 +1/2) = n* (2.5 + n/2) = n* (5/2 + n/2) =

(5 + n) * n / 2 - 1 = O(n^2)

За 0001:
4 + 1 + 1   +    3 + 1 + 1    +  2 + 1 + 1   + 1 + 1 = 18 - 1
